x11: don't add unknown tools to our list
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 14 Dec 2018 04:57:26 +0000 (14:57 +1000)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 18 Dec 2018 20:41:09 +0000 (21:41 +0100)
Generic tools (Bamboo, built-in tablets) always have the same serial number
assigned by the wacom driver. This includes the touch tool when the wacom
driver handles the touch evdev node (common where users require the wacom
gestures to work).

When the first device is the touch device, a tool is created with that serial.
All future tools now return the touch tool on lookup since they all share the
same serial number. Worse, this happens *across* devices, so the pen
event node gets assigned the touch tool because they all have the same serial.

Since we don't actually care about the touch as a tool, let's skip any unknown
tool. This captures pads as well.

gdk/x11/gdkdevicemanager-xi2.c

index 413918ec4195a2d00d7fe7d7ac2aaab69f5ec7c0..8c1cc41a709650ab2e9cbedde0b3c1c75b180571 100644 (file)
@@ -1103,8 +1103,11 @@ handle_property_change (GdkX11DeviceManagerXI2 *device_manager,
               GdkDeviceToolType tool_type;
 
               tool_type = device_get_tool_type (device);
-              tool = gdk_device_tool_new (serial_id, tool_id, tool_type, 0);
-              gdk_seat_default_add_tool (GDK_SEAT_DEFAULT (seat), tool);
+              if (tool_type != GDK_DEVICE_TOOL_TYPE_UNKNOWN)
+                {
+                  tool = gdk_device_tool_new (serial_id, tool_id, tool_type, 0);
+                  gdk_seat_default_add_tool (GDK_SEAT_DEFAULT (seat), tool);
+                }
             }
         }